#ifndef REDIS_ORM_H
#define REDIS_ORM_H

#include <hiredis/hiredis.h>
#include <string>
#include <vector>
#include <map>

class RedisORM {
private:
    static RedisORM* instance;
    redisContext* context;

    // 私有构造函数
    RedisORM(const std::string& host, int port);

    // 禁用拷贝构造函数和赋值运算符
    RedisORM(const RedisORM&) = delete;
    RedisORM& operator=(const RedisORM&) = delete;

    // 私有析构函数
    ~RedisORM();

public:
    // 获取单例实例
    static RedisORM* getInstance(const std::string& host, int port);

    // 插入数据（设置键值对）
    bool insert(const std::string& key, const std::string& value);

    // 删除数据
    bool remove(const std::string& key);

    // 查询数据
    std::string select(const std::string& key);

    // 更新数据
    bool update(const std::string& key, const std::string& new_value);

    // 插入哈希表字段
    bool insertHashField(const std::string& hashKey, const std::string& field, const std::string& value);

    // 查询哈希表字段
    std::string selectHashField(const std::string& hashKey, const std::string& field);

    // 更新哈希表字段
    bool updateHashField(const std::string& hashKey, const std::string& field, const std::string& new_value);

    // 删除哈希表字段
    bool removeHashField(const std::string& hashKey, const std::string& field);
};

#endif // REDIS_ORM_H